﻿using Foulds.Calculator.StateMachine;

namespace Foulds.Calculator.Service
{
    #region Operators
    /// <summary>
    /// The operators that can be applied to operands (numbers).
    /// </summary>
    public enum Operators
    {
        None = 0,
        Plus,
        Minus,
        Multiply,
        Equals
    }
    #endregion

    #region Functions
    /// <summary>
    /// Functions the calculator can perform.
    /// </summary>
    public enum Functions
    {
        None = 0,
        Cancel,
        Backspace
    }
    #endregion

    public delegate void DisplayChange(string inputDisplay, string expressionDisplay);

    #region ICalculator
    /// <summary>
    /// This interface is for the basic operations of the calculator.
    /// </summary>
    public interface ICalculator
    {
        #region Events
        event DisplayChange DisplayChanged;
        #endregion

        string InputDisplay { get; }
        string ExpressionDisplay { get; }

        void PowerOn();
        void PowerOff();
        void PressKey(CalculatorKey key);
    }
    #endregion
}
